var iconv = require('iconv-lite');

// //字符串转16进制字符串
// var string216Str = function (str) {
//     var _16str = "";
//     for(var i=0; i<str.length; i++) {
//         var tmp = parseInt(str.charCodeAt(i)).toString(16);
//         if(tmp.length == 1) {
//             tmp = "0" + tmp;
//         }
//         _16str += tmp;
//     }
//     return _16str;
// }

//字符串转16进制字符串,以防发过来的是汉字
var string216Str = function (str) {
    var buf = iconv.encode(str, 'utf-8');//return utf-8 encoded bytes from unicode string
    var _16str = "";

    for(var i=0; i<buf.length; i++) {
        var tmp = parseInt(buf[i]).toString(16);
        if(tmp.length == 1) {
            tmp = "0" + tmp;
        }
        _16str += tmp;
    }
    return _16str;
}

var makeCheckSum = function (str) {
    if (str == null || str =="") {
        return "";
    }

    var total = parseInt(str.substring(0, 2), 16);
    var len = str.length;
    var num = 2;
    while(num < len){
        var s = str.substring(num, num + 2);
        total ^= parseInt(s, 16);
        num = num + 2;
    }

    var _16total = total.toString(16);
    if(_16total.length == 1) {
        _16total = "0" + _16total;
    } else{
        _16total = _16total;
    }

    return _16total.toUpperCase();
}

var combineA4Msg = function(receiver, data){
    var dataAll = "CCTXA,"+receiver+",1,2,A4"+ string216Str(data);
    var checkSum = makeCheckSum(string216Str(dataAll));
    var dataSend = "$"+dataAll+"*"+checkSum+"\r\n";
    return dataSend;
}

// var hexToGbkStr = function (hex){ //内容转GBK
//     var hexByte=[];
//     for(var i = 0; i < hex.length; i = i + 2) {
//         var curCharCode = parseInt(hex.substr(i, 2), 16); // ASCII Code Value
//         hexByte.push(curCharCode);
//     }
//     var buffer = new Buffer(hexByte);
//     var buf_gbk = iconv.decode(buffer, 'gbk');//return GBK encoded bytes from unicode string
//
//     return buf_gbk;
// }

module.exports = {
    string216Str: string216Str,
    makeCheckSum: makeCheckSum,
    combineA4Msg: combineA4Msg
};